package com.bawei.coroutine

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.TextView
import android.widget.Toast
import androidx.lifecycle.LifecycleCoroutineScope
import kotlinx.coroutines.*

/**
 1.什么是协程？？？ 回答线程框架，好多人说轻量级线程
 2.协程和线程如何工作？？
 3.挂起函数？？suspend
 (1)作用：提醒，我是一个耗时操作，请把我放在后台线程中执行
 只能被协程作用域或另一个挂起函数调用




 */
class MainActivity : AppCompatActivity() {
    private lateinit var tv:TextView
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        tv = findViewById(R.id.tv)

        GlobalScope.launch(Dispatchers.Main) {
            val network = network()
            Log.d("ytx", "执行完suspend方法"+Thread.currentThread().name)
            tv.text = network.toString()
        }
        Log.d("ytx", "onCreate:主线程执行 "+Thread.currentThread().name)
    }

    private suspend fun network():String {
        withContext(Dispatchers.IO){
            delay(10*1000)
            Log.d("ytx", "执行suspend方法：协程被挂起"+Thread.currentThread().name)

        }
        return "hahha"
    }
}